package com.xquant.common.engine.xPP.request;

import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class UnderlyingPricingParam {
    private String underlyingID;
    private String spotPrice;
    private String spotQuoteType;
    private Ir discount;
    private Ir dividend;
    private Ir funding;
    private Ir volSurface;
    private Ir fxVolSurface;
    private Ir forward;
    private String fxCorr;
    private UnderlyingCurveCodes underlyingCurveCodes;
    private List<FixingPrice> fixingPrices;

    /**
     * 标的价格调整方式 可选	0：不调整（默认）1：考虑除权除息且标的分红不扣税  2：考虑除权除息且标的分红扣税 3：考虑除权(分红为0)
     */
    private String priceAdjustType;
    /**
     * 分红税率	可选
     */
    private String divTax;


    public String getUnderlyingID() {
        return underlyingID;
    }

    public UnderlyingPricingParam setUnderlyingID(String underlyingID) {
        this.underlyingID = underlyingID;
        return this;
    }

    public String getSpotPrice() {
        return spotPrice;
    }

    public UnderlyingPricingParam setSpotPrice(String spotPrice) {
        this.spotPrice = spotPrice;
        return this;
    }

    public String getSpotQuoteType() {
        return spotQuoteType;
    }

    public UnderlyingPricingParam setSpotQuoteType(String spotQuoteType) {
        this.spotQuoteType = spotQuoteType;
        return this;
    }

    public Ir getDiscount() {
        return discount;
    }

    public UnderlyingPricingParam setDiscount(Ir discount) {
        this.discount = discount;
        return this;
    }

    public Ir getDividend() {
        return dividend;
    }

    public UnderlyingPricingParam setDividend(Ir dividend) {
        this.dividend = dividend;
        return this;
    }

    public Ir getFunding() {
        return funding;
    }

    public UnderlyingPricingParam setFunding(Ir funding) {
        this.funding = funding;
        return this;
    }

    public Ir getVolSurface() {
        return volSurface;
    }

    public Ir getFxVolSurface() {
        return fxVolSurface;
    }

    public UnderlyingPricingParam setFxVolSurface(Ir fxVolSurface) {
        this.fxVolSurface = fxVolSurface;
        return this;
    }

    public Ir getForward() {
        return forward;
    }

    public UnderlyingPricingParam setForward(Ir forward) {
        this.forward = forward;
        return this;
    }

    public String getFxCorr() {
        return fxCorr;
    }

    public UnderlyingPricingParam setFxCorr(String fxCorr) {
        this.fxCorr = fxCorr;
        return this;
    }

    public UnderlyingCurveCodes getUnderlyingCurveCodes() {
        return underlyingCurveCodes;
    }

    public UnderlyingPricingParam setUnderlyingCurveCodes(UnderlyingCurveCodes underlyingCurveCodes) {
        this.underlyingCurveCodes = underlyingCurveCodes;
        return this;
    }

    public List<FixingPrice> getFixingPrices() {
        return fixingPrices;
    }

    public UnderlyingPricingParam setFixingPrices(List<FixingPrice> fixingPrices) {
        this.fixingPrices = fixingPrices;
        return this;
    }

    public String getPriceAdjustType() {
        return priceAdjustType;
    }

    public UnderlyingPricingParam setPriceAdjustType(String priceAdjustType) {
        this.priceAdjustType = priceAdjustType;
        return this;
    }

    public String getDivTax() {
        return divTax;
    }

    public UnderlyingPricingParam setDivTax(String divTax) {
        this.divTax = divTax;
        return this;
    }

    public UnderlyingPricingParam setVolSurface(Ir volSurface) {
        this.volSurface = volSurface;
        return this;
    }



}
